"use strict";
// 以下代码为什么会提示错误，应该如何解决下述问题。
// type User = {
//      id: number;
//      kind: string;
//    };
//    function makeCustomer <T extends User>(u: T): T {
//      // Error（TS 编译器版本：v4.4.2）
//      // Type '{ id: number; kind: string; }' is not assignable to type 'T'.
//      // '{ id: number; kind: string; }' is assignable to the constraint of type'T', 
//      // but 'T' could be instantiated with a different subtype of constraint 'User'.
//      return {
//        id: u.id,
//        kind: 'customer'
//     }
//    }
function makeCustomer(u) {
    // 使用 as T['kind'] 类型断言来确保 kind 属性的类型与 T 中的 kind 类型兼容
    // 如果返回的参数类型不是字符串，则会编译时报错
    return {
        id: u.id,
        kind: 'customer'
    };
}
